from openpyxl import load_workbook
from loguru import logger
from tools.handle_path import excel_file_path


class HandleExcel:
    # excel_file_path : excel文件用例路径
    def __init__(self):
        try:
            self.wb = load_workbook(excel_file_path)
            logger.info(f"excel加载成功")
        except:
            logger.exception(f"excel加载失败")

        self.sh = None

    # 切换excel表单
    def switch_sheet(self, sheet_name):
        self.sh = self.wb[sheet_name]
        logger.info(f"读取的表单为{self.sh}")

    # 读取excel表单内的数据
    def read_excel_data(self):
        # 空列表，用来载入后续转化的数据
        excel_data_list = []
        # 读取sheet页所有内容并且转为list数据类型
        sh_read_data = list(self.sh.values)
        # 遍历读取excel文件sheet页内的数据，转化成字典类型的数据，方便后续其他模块使用
        for item in range(1, len(sh_read_data)):
            data = dict(zip(sh_read_data[0], sh_read_data[item]))
            # 转化后的数据，太添加到空列表中
            excel_data_list.append(data)
        logger.info(f"从excel里读取的数据为:{excel_data_list}")
        return excel_data_list

    # 保存excel
    def save_excel(self, excel_file_path):
        """

        :param excel_file_path: 若保存到原文件，则excel文件路径和原来保持一致.
        若保存到新文件中，则excel文件路径和原来不一致即可 : wb.save('新excel文件路径')
        :return:
        """
        try:
            self.wb.save(excel_file_path)
            logger.info(f"excel文件保存成功, 保存路径为:{excel_file_path}")
        except:
            logger.exception(f"保存失败,请检查保存路径是否正确:{excel_file_path}")


if __name__ == '__main__':
    hx = HandleExcel()
    hx.switch_sheet("注册")
    read_data = hx.read_excel_data()
    print(read_data, type(read_data))
